# ========= 导入基础模块 ============
from resources_base.module_base.importbase import *
# ========= 导入数据模块=============
from basicweb.models import Phase, PhaseContent, PhaseName
from trainweb.models import RecordDetail


def index(request):
    """返回阶段和阶段详情页面"""
    return render(request, 'basic/phase_phasecontent.html')


def get_phase_phasecotent(request):
    """获取某一个职位的阶段以及阶段内容的明细"""
    # 获取当前职位的编号！
    position_id = request.POST.get('position_id')
    # 获取当前职位的阶段
    obj_phases = list(Phase.objects.filter(position_id=position_id).values('id', 'phasename__name'))
    # 遍历数据获得每个阶段的明细
    for index, value in enumerate(obj_phases):
        # 获取当前阶段的明细并附加到集合中
        obj_phases[index]['phasecontent'] = list(PhaseContent.objects.filter(phase_id=value.get('id')).values("id",'name'))

    # 返回
    return JsonResponse({'data': obj_phases})


def get_phase_phasecontent_info(request):
    """获取响应职位的阶段和阶段内容"""
    # 获取信息传递的信息
    position_id = request.POST.get('position_id')
    # 获取当前职位下的所有阶段
    obj_phases = list(Phase.objects.filter(position_id=position_id).values("id", 'phasename__name'))
    # 遍历
    for index, value in enumerate(obj_phases):
        obj_phases[index]['content'] = list(PhaseContent.objects.filter(phase_id=value.get('id')).values('id','name'))

    # 返回
    return JsonResponse({'data': obj_phases})


def get_next_phase(request):
    """获取下一个阶段"""
    # 获取前端传递的数据
    position_id = request.POST.get('position_id')
    # 获取所有的阶段Id和名称
    phasename_objs = list(PhaseName.objects.all().values())

    # 定义两个集合
    all_phase_name =[]

    # 遍历
    for index, value in enumerate(phasename_objs):
        all_phase_name.append({'name': value.get('name'), 'value': value.get('id')})

    # 返回
    return JsonResponse({'data': all_phase_name})


def add_phase(request):
    """添加阶段"""
    # 获取前端传递的数据
    position_id = request.POST.get('position_id')
    phasename_id = request.POST.get('phasename_id')
    # 判断当前阶段是否添加
    is_exists = Phase.objects.filter(position_id=position_id, phasename_id=phasename_id).exists()
    if is_exists:
        return JsonResponse({'status': False, 'error': '当前职位下当前阶段已经添加！'})

    # 添加
    try:
        Phase.objects.create(position_id=position_id, phasename_id=phasename_id)
        return JsonResponse({'status': True})
    except Exception as e:
        return JsonResponse({'status': False, 'error': '为当前职位添加阶段出现异常！具体原因：' + str(e)})


def del_phase(request):
    """删除阶段"""
    # 获取前端传递的数据
    phase_id = request.POST.get('phase_id')
    # 判断当前阶段下有没有内容
    is_exists = PhaseContent.objects.filter(phase_id=phase_id).exists()
    # 判断
    if is_exists:
        return JsonResponse({'status': False, 'error': '当前阶段下上已挂载阶段内容，无法删除！'})
    try:
        # 删除当前职位
        Phase.objects.filter(id=phase_id).delete()

        # 返回
        return JsonResponse({'status': True})
    except Exception as e:
        return JsonResponse({'status': False, 'error': '删除职位阶段出现未知的错误，具有原因：' + str(e)})


def add_phasecontent(request):
    """添加阶段内容"""
    # 获取前端传递的数据
    phase_id = request.POST.get('phase_id')
    phasecontent_name= request.POST.get('phasecontent_name')
    # 判断当前阶段内容名称是否存在
    is_exists = PhaseContent.objects.filter(phase_id=phase_id, name=phasecontent_name).exists()
    if is_exists:
        return JsonResponse({'status': False, 'error': '当前阶段下当前阶段内容已经存在！无法添加！'})
    try:
        PhaseContent.objects.create(phase_id=phase_id, name=phasecontent_name)
        return JsonResponse({'status': True,})
    except Exception as e:
        return JsonResponse({'status': False, 'error': '添加阶段内容出现异常，具体原因：' + str(e)})


def edit_phasecontent(request):
    """编辑阶段内容"""
    # 获取前端传递的数据
    # 获取前端传递的数据
    phase_id = request.POST.get('phase_id')
    phasecontent_id = request.POST.get('phasecontent_id')
    phasecontent_name = request.POST.get('phasecontent_name')

    # 判断当前阶段内容名称是否存在
    is_exists = PhaseContent.objects.filter(phase_id=phase_id, name=phasecontent_name).exists()
    if is_exists:
        return JsonResponse({'status': False, 'error': '当前阶段下当前阶段内容已经存在！无法修改！'})
    try:
        phasecontent_obj = PhaseContent.objects.filter(id=phasecontent_id).first()
        phasecontent_obj.name=phasecontent_name
        phasecontent_obj.save()
        return JsonResponse({'status': True, })
    except Exception as e:
        return JsonResponse({'status': False, 'error': '修改阶段内容出现异常，具体原因：' + str(e)})


def del_phasecontent(request):
    """删除阶段内容"""
    # 获取前端传递的数据
    phasecontent_id = request.POST.get('phasecontent_id')
    # 判断当前阶段内容名称是否存在
    is_exists = RecordDetail.objects.filter(phasecontent_id=phasecontent_id).exists()
    if is_exists:
        return JsonResponse({'status': False, 'error': '当前阶段内容已有数据录入， 无法删除！'})
    try:
        PhaseContent.objects.filter(id=phasecontent_id).delete()
        return JsonResponse({'status': True, })
    except Exception as e:
        return JsonResponse({'status': False, 'error': '删除阶段内容出现异常，具体原因：' + str(e)})